﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Biblioteca.classesBasicas.jogo;
using Biblioteca.fachada;

namespace Desktop.views.cruds.crudsJogo.crudPartida
{
    public partial class PartidaReserva : Form
    {
        private MenuPartida menuPartida;
        private Reserva reserva = new Reserva();
        private List<Reserva> listaReserva;
        private Fachada fachada = new Fachada();
        private bool campoSelecionado;


        public PartidaReserva(MenuPartida menuPartida)
        {
            this.menuPartida = menuPartida;

            menuPartida.Hide();
            InitializeComponent();
        }


        private void buttonAvancar_Click(object sender, EventArgs e)
        {
            if (campoSelecionado == false)
            {
                MessageBox.Show("A reserva não foi selecionada para a Partida.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            else
            {
                AtribuicoesPartida atribuicoesPartida = new AtribuicoesPartida(this, reserva);
                atribuicoesPartida.Show();
                
            }
        }

        private void buttonVoltar_Click(object sender, EventArgs e)
        {
            menuPartida.Show();
            this.Dispose();
        }
        
        private void PartidaReserva_FormClosed(object sender, FormClosedEventArgs e)
        {
            menuPartida.Show();
            this.Dispose();
        }

        private void PartidaReserva_Load(object sender, EventArgs e)
        {
            carregarGridViewPartidaReserva();
        }

        private void dataGridViewPartidaReserva_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            carregarGridViewPartidaReserva();

            if (e.RowIndex > -1)
            {
                DataGridViewRow row = this.dataGridViewPartidaReserva.Rows[e.RowIndex];

                if (DialogResult.Yes == MessageBox.Show("Tem certeza que deseja selecionar esta Reserva?", "Confirmação", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
                {

                    reserva.Id = row.Cells[0].Value.ToString();
                    reserva.Data = row.Cells[1].Value.ToString();
                    reserva.Horario = row.Cells[2].Value.ToString();
                    reserva.Duracao = row.Cells[3].Value.ToString();
                    reserva.QuantidadeJogadores = row.Cells[4].Value.ToString();
                    reserva.Campo = new Campo();
                    reserva.Campo.Id = row.Cells[5].Value.ToString();

                    row.DefaultCellStyle.BackColor = Color.LightBlue;

                    campoSelecionado = true;
                }
                else
                {
                    row.DefaultCellStyle.BackColor = Color.White;

                    campoSelecionado = false;
                }
            }
        }

        public void carregarGridViewPartidaReserva()
        {
            listaReserva = fachada.listarReserva();

            dataGridViewPartidaReserva.Rows.Clear();
            dataGridViewPartidaReserva.ColumnCount = 6;
            dataGridViewPartidaReserva.ColumnHeadersVisible = true;
            dataGridViewPartidaReserva.AllowUserToAddRows = false;

            DataGridViewCellStyle columnHeaderStyle =
            new DataGridViewCellStyle();
            columnHeaderStyle.BackColor = Color.Aqua;
            columnHeaderStyle.Font =
                new Font("Verdana", 10, FontStyle.Bold);
            this.dataGridViewPartidaReserva.ColumnHeadersDefaultCellStyle =
                columnHeaderStyle;

            //dataGridViewReserva.DataSource = listaReserva;

            this.dataGridViewPartidaReserva.Columns[0].Name = "ID";
            this.dataGridViewPartidaReserva.Columns[1].Name = "DATA";
            this.dataGridViewPartidaReserva.Columns[2].Name = "HORARIO";
            this.dataGridViewPartidaReserva.Columns[3].Name = "DURACAO";
            this.dataGridViewPartidaReserva.Columns[4].Name = "QTD_JOGADORES";
            this.dataGridViewPartidaReserva.Columns[5].Name = "ID_CAMPO";

            foreach (Reserva elemento in listaReserva)
            {
                dataGridViewPartidaReserva.Rows.Add(elemento.Id, elemento.Data, elemento.Horario, elemento.Duracao, elemento.QuantidadeJogadores, elemento.Campo.Id);
            }
        }

        public void cancelar()
        {
            menuPartida.cancelar();
            this.Dispose();
        }

    }
}
